package equalsmethod;

//==和equals的对比
//==是一个比较运算符，既可以判断基本类型，也可以判断引用类型
//1.==如果判断基本类型，则判断的是值是否相等
//2.==如果判断引用类型，则判断的是地址是否相等，及判断是不是同一个对象

//equals是Object类中的方法，只能判断引用类型
public class Equals01_ {
    public static void main(String[] args) {
       /* A a = new A();
        A b = a;
        A c = b;
        System.out.println(a == b);//true,地址相同
        System.out.println(a == c);//true

        B d = a;
        System.out.println(a == d);//向上转型，地址依然相同,true

        B e = new B();
        System.out.println(a == e);//false*/
        String a = "jack";
        String b = "jack";
        System.out.println(b.equals(a));
        System.out.println(b == a);


        String str1 = new String("hello");
        String str2 = new String("hello");
        //false,因为==比较两个对象的时候，比较的是地址
        System.out.println(str1 == str2);
        //true,因为String在源代码中重写了equals方法，此时是判断值是否相同
        System.out.println(str1.equals(str2));
    }
}
class A extends B{
}
class B{}
